内存泄漏
内存泄露是指你用不到(访问不到)的变量,依然占居着内存空间,不能被再次利用起来。
常见的内存泄漏的原因
虽然 JavaScript 会自动垃圾收集,但是如果我们的代码没有及时清空一些被调用的东西,就会让变量一直处于无法回收状态。
全局变量引起
由于使用未声明的变量,而意外的创建了一个全局变量,而使这个变量一直留在内存中无法被回收。
function leaks() {
leak = 'xxxxxx' //leak 成为一个全局变量,不会被回收
}
闭包(错解,但能过)
不合理的使用闭包,从而导致某些变量一直被留在内存当中。
var leaks = (function () {
var leak = 'xxxxxx' // 被闭包所引用,不会被回收
return function () {
console.log(leak)
}
})()
被遗忘的计时器或回调函数
设置了 setInterval 定时器,而忘记取消它,如果循环函数有对外部变量的引用的话,那么这个变量会被一直留
存在引用
获取一个 DOM 元素的引用,而后面这个元素被删除,由于我们一直保留了对这个元素的引用,所以它也无法被回收。